/**
 * \file interface-console.h
 * \brief fonctions de test avec le fichier villes.vl
 * \author 
 * \version 0.1
 * \date 25/12/2013
 *
 * Ce fichier contient les fonctions d'affichage sur la console
 *
 */
#ifndef UICONSOLE
#define UICONSOLE
#include "interface-console.h"
#endif

void print_barre(){
	system("clear");
	printf("\n\n");
	printf("===============================================================================\n\n");
	printf("\t\t\t  Programme du voyageur de commerce\n\n");
	printf("\t\t\t Resolution par algorithme genetique\n\n");
	printf("===============================================================================\n\n\n\n");
	
	
}
char acceuil()
{
	char choix = 0;
	print_barre();	
	printf("1) Charger un fichier ville\n");
	printf("2) Quitter\n\n");
	printf("Votre choix: ");
	
	do
	{
		scanf(" %c", &choix);
		
		if(choix != '1' && choix != '2')
			printf("\nChoix invalide: recommencer: "); 
			
	}while(choix != '1' && choix != '2' );	
	
	printf("\n");
	
	if(choix == '1') return 1;
	if(choix == '2') return 2;
	else return -1;
}

char menu()
{
	char choix = 0;
	
	fflush(stdin);
	system("clear");
	printf("\n\n");
	print_barre();
	printf("1) Afficher la liste des villes\n");
	printf("2) Choix de la ville de départ\n");
	printf("3) Afficher le tableau des distances\n");
	printf("4) Recharger un fichier ville\n");
	printf("5) Lancer l'algorithme genetique\n");
	printf("q) Quitter\n\n");
	
	do
	{
		printf("Votre choix: ");
		scanf(" %c", &choix);
		
		if( choix != '1' && choix != '2' && choix != '3' && choix != '4' && choix != '5' && choix != 'q' )
			printf("\nChoix invalide: recommencer: "); 
	}while( choix != '1' && choix != '2' && choix != '3' && choix != '4' && choix != '5' && choix != 'q' );
	
	printf("\n");
	
	return choix;			
}

char* saisie_filename()
{
	char nom[MAXCHAR];
	char* name = NULL;
	
	printf("Nom du fichier ville a charger: ");
	scanf(" %s", nom);
	
	name = malloc(sizeof(char) * strlen(nom));
	strcpy(name, nom);
	
	return name;
}

int select_starting_city(City* city, int nbrcity)
{
	int choix = -1;
	print_barre();
	
	printf("Choix de la ville de depart :\n\n");
	print_all_city(city,nbrcity);
	printf("Votre choix: ");
	do
	{	
		scanf(" %d", &choix);
		printf("choix = %d nbrcity = %d\n", choix, (char) nbrcity);
		if( choix >= nbrcity || choix < 0 )
			printf("\nChoix invalide: recommencer: "); 
		
	}while( choix >=  nbrcity || choix < 0 ); 
	
	return choix;
	
}

int recup_parametre(int *crit,double *seuil,int* taille, int* quota, int* met_sel, float* proba_cro, float* proba_mut, int* generation)
{
	
	//Taille
	printf("La taille de la population: ");
	do
	{
		scanf(" %d",taille);
		if(*taille < 0 || *taille != (int) *taille)
			printf("\nEntrer une taille valide: ");
	}while( *taille < 0 || *taille != (int) *taille ); 
	
	//Quota
	printf("Le quota de selection: ");
	do
	{
		scanf(" %d",quota);
		if(*quota < 0 || *quota > *taille)
			printf("\nEntrer un quota valide: ");
	}while(*quota < 0 || *quota > *taille); 
	
	//Methode de selection
	printf("La methode de selection (0:TOURNOI   1:ELITISTE ) : ");
	do
	{
		scanf(" %d",met_sel);
		if(*met_sel != 0 && *met_sel != 1)
			printf("\nEntrer une methode valide: ");
	}while(*met_sel != 0 && *met_sel != 1); 
	
	//Probabilite de croisement
	printf("La probabilité de croisement: ");
	do
	{
		scanf(" %f",proba_cro);
		if(*proba_cro < 0 || *proba_cro > 1)
			printf("\nEntrer une probabilite valide: ");
	}while(*proba_cro < 0 || *proba_cro > 1);
	
	//Probabilite de mutation
	printf("La probabilité de mutation: ");
	do
	{
		scanf(" %f",proba_mut);
		if(*proba_mut < 0 || *proba_mut > 1)
			printf("\nEntrer une probabilite valide: ");
	}while(*proba_mut < 0 || *proba_mut > 1); 
	
	//choix d'arret
	printf("critére d'arret (0:SEUIL  1:NOMBRE DE GENERATION): ");
	do
	{
		scanf(" %d",crit);
		if(*generation < 0)
			printf("\nEntrer un choix valide: ");
	}while(*crit != 0 && *crit != 1); 
	
	if(*crit==1)
	{
		//seuil
		printf("Le nombre de generation: ");
		do
		{
			scanf(" %d",generation);
			if(*generation < 0)
				printf("\nEntrer un nombre de generation valide: ");
		}while(*generation < 0);
		*seuil =0;
	}		
	else{
		//Nombre de generation
		printf("La seuil: ");
		do
		{
			scanf(" %lf",seuil);
			if(*seuil < 0)
				printf("\nEntrer un seuil valide: ");
		}while(*seuil < 0);
		*generation = *quota;
	}
}












